#include<bits/stdc++.h>
using namespace std;
int n;
char s[3000005];
struct node{
    int sizee;
    char s[25];
    bool operator<(const node &rhs)const
    {
        if(sizee<rhs.sizee)
        {
            return true;
        }
        if(sizee>rhs.sizee)
        {
            return false;
        }
        for(int i=1;i<=sizee;i++)
        {
            if(s[i]<rhs.s[i])
            {
                return true;
            }
            if(s[i]>rhs.s[i])
            {
                return false;
            }
        }
        return false;
    }
};
map<node,bool>m;
void dfs(node x)
{
    int nn=x.sizee;
    if(nn<=1)
    {
        return;
    }
    //cout<<"!!"<<nn<<endl;
    for(int i=1;i<nn;i++)
    {
        if(x.s[i]=='A'&&x.s[i+1]=='B')
        {
            continue;
        }
        node xx=x;
        for(int j=i;j<=nn-2;j++)
        {
            xx.s[j]=x.s[j+2];
        }
        xx.sizee=nn-2;
        if(m[xx]==0)
        {
            m[xx]=1;
            dfs(xx);
        }
    }
}
int main()
{
    freopen("song.in","r",stdin);
    freopen("song.out","w",stdout);
    cin>>(s+1);
    n=strlen(s+1);
    if(n<=20)
    {
        node start;
        start.sizee=n;
        for(int i=1;i<=n;i++)
        {
            start.s[i]=s[i];
        }
        m[start]=1;
        dfs(start);
        cout<<m.size();
    }
    else
    {
        int cnt=0;
        for(int i=1;i<=n;i++)
        {
            if(s[i]=='B'&&s[i+1]=='A')
            {
                cnt++;
            }
        }
        cout<<(cnt+1);
    }
    return 0;
}
